package com.hnjfzn.common.security.utils;

import com.hnjfzn.common.core.constant.CacheConstants;
import com.hnjfzn.common.core.utils.SpringUtils;
import com.hnjfzn.common.redis.service.RedisService;
import com.hnjfzn.system.api.domain.SysInfo;

import java.util.Collection;
import java.util.List;

/**
 * 字典工具类

 */
public class SysUtils
{
    /**
     * 设置字典缓存
     * 
     * @param code 参数键
     */
    public static void set(String code, SysInfo sys)
    {
        SpringUtils.getBean(RedisService.class).setCacheObject(getCacheKey(code), sys);
    }

    /**
     * 获取系统信息
     *
     * @param code 参数键
     * @return 系统信息
     */
    public static SysInfo get(String code){
        return SpringUtils.getBean(RedisService.class).getCacheObject(getCacheKey(code));
    }

    /**
     * 获取系统信息
     * 
     * @return 系统信息
     */
    public static List<SysInfo> getAll()
    {
        return SpringUtils.getBean(RedisService.class).getCacheListByPattern(getCacheKey("*"));
    }

    /**
     * 删除
     * 
     * @param code 参数键
     */
    public static void remove(String code)
    {
        SpringUtils.getBean(RedisService.class).deleteObject(getCacheKey(code));
    }

    /**
     * 清空
     */
    public static void clear()
    {
        Collection<String> keys = SpringUtils.getBean(RedisService.class).keys(getCacheKey("*"));
        SpringUtils.getBean(RedisService.class).deleteObject(keys);
    }

    /**
     * 设置cache key
     * 
     * @param code 参数键
     * @return 缓存键key
     */
    public static String getCacheKey(String code)
    {
        return CacheConstants.SYS_KEY + code;
    }
}
